#ifndef RESUME_SAISIE_H
#   define RESUME_SAISIE_H


/**
 * \struct resume_saisie resume_saisie.h
 *
 *
 */
struct resume_saisie
{
    /**
     * l'orientation permet de savoir dans quelle direction le joueur souhaite
     * se deplacer. Si il n'a souhaite aucun deplacement, il vaudra NEUTRE.
     * Dans le cas contraire, il prendra la valeur d'une des constantes HAUT,
     * DROITE, BAS, GAUCHE
     */
    char orientation;
    /**
     * direction_tir permet de savoir si le joueur souhaite tirer,
     * et, si oui, dans quelle direction. Les valeurs valides sont les memes
     * que pour orientation, suivant la meme logique.\n
     * Les touches de tir seront Z (haut), D (droite), S (bas), et Q (gauche)
     */
    char direction_tir;
    /**
     * entree permet de savoir si le joueur a appuye sur entree.\n
     * Utiliser VRAi ou FAUX
     */
    char entree;
    /**
     * utilisation_objet permet de savoir si le joueur souhaite utiliser un
     * objet, et, si oui, lequel.\n
     * 0 signifie aucune utilisation. Les nombres de 1 a 3 inclus indiquent que
     * le joueur souhaite utiliser l'objet correspondant.\n
     * Les touches utilisees sont F1, F2, et F3.
     */
    char utilisation_objet;
    /**
     * quitte (VRAI ou FAUX) indique si le joueur
     * souhaite quitter le jeu (touche ESC)
     */
    char quitte;
};



/**
 * \struct resume_souris_echap resume_saisie.h
 * Permet de savoir si le joueur clique, et, si oui, ou.\n
 * Permet egalement de detecter les pressions de la touche echap.
 */
struct resume_souris_echap
{
    unsigned int x_souris;
    unsigned int y_souris;
    char clique;
    char echap;
};



/**
 * \fn void init_resume_saisie(struct resume_saisie* resume)
 * \brief Initialise un resume de saisie (a utiliser avant chaque bataille)
 *
 * \param resume L'adresse du resume a initialiser
 */
void init_resume_saisie(struct resume_saisie* resume);



/**
 * \fn void recolter_evenements(struct resume_saisie* resume)
 * \brief Met a jour un resume_evenements
 *
 * \param[in,out] resume L'adresse du resume a mettre a jour
 *
 * Note : cette fonction est surtout utile pour remettre le champ
 * utilisation_objet a 0 avant la recolte d'evenements. En effet,
 * puisqu'un objet disparait lors de son utilisation lors d'une
 * bataille, il serait inutile de laisser ce champ a 1, 2, ou 3
 * apres un tour de la boucle de jeu.\n
 * Le meme raisonement est valable pour la touche entree, mais cela
 * ne concerne que la navigation dans les menus.\n
 * Une autre utilite est de pouvoir choisir la version (SDL ou autre)
 * dans une petite fonction isolee plutot qu'au beau milieu
 * de la boucle de jeu.
 */
void recolter_evenements(struct resume_saisie* resume);



/**
 * \fn void init_resume_souris_echap(struct resume_souris_echap* resume);
 * \brief Initialise un resume de souris et de touche Echap
 *
 * \param[out] resume L'adresse du resume concerne
 */
void init_resume_souris_echap(struct resume_souris_echap* resume);



/**
 * \fn void recolter_souris_echap(struct resume_souris_echap* resume)
 * \brief Met a jour un resume_souris_echap
 *
 * \param[in,out] resume L'adresse du resume a mettre a jour
 */
void recolter_souris_echap(struct resume_souris_echap* resume);




#endif /* RESUME_SAISIE_H */
